

FUNCTION BC128String RETURNS CHARACTER ( INPUT BCType AS CHARACTER, INPUT BCData AS CHARACTER).

    DEFINE VARIABLE BCValArr AS INTEGER EXTENT 128.
    DEFINE VARIABLE BCChrArr  AS CHARACTER EXTENT 128.

    DEFINE VARIABLE BCString AS CHARACTER.
    DEFINE VARIABLE BCValue AS INTEGER.

    DEFINE VARIABLE i AS INTEGER.
    DEFINE VARIABLE j AS INTEGER.

    BCType = "B".
    
    if BCData = "" then RETURN "".
     
    ASSIGN
        BCValArr[  1] = 32 
        BCValArr[  2] = 33 
        BCValArr[  3] = 34 
        BCValArr[  4] = 35 
        BCValArr[  5] = 36 
        BCValArr[  6] = 37 
        BCValArr[  7] = 38 
        BCValArr[  8] = 39 
        BCValArr[  9] = 40 
        BCValArr[ 10] = 41 
        BCValArr[ 11] = 42 
        BCValArr[ 12] = 43 
        BCValArr[ 13] = 44 
        BCValArr[ 14] = 45 
        BCValArr[ 15] = 46 
        BCValArr[ 16] = 47 
        BCValArr[ 17] = 48 
        BCValArr[ 18] = 49 
        BCValArr[ 19] = 50 
        BCValArr[ 20] = 51 
        BCValArr[ 21] = 52 
        BCValArr[ 22] = 53 
        BCValArr[ 23] = 54 
        BCValArr[ 24] = 55 
        BCValArr[ 25] = 56 
        BCValArr[ 26] = 57 
        BCValArr[ 27] = 58 
        BCValArr[ 28] = 59 
        BCValArr[ 29] = 60 
        BCValArr[ 30] = 61 
        BCValArr[ 31] = 62 
        BCValArr[ 32] = 63 
        BCValArr[ 33] = 64 
        BCValArr[ 34] = 65 
        BCValArr[ 35] = 66 
        BCValArr[ 36] = 67 
        BCValArr[ 37] = 68 
        BCValArr[ 38] = 69 
        BCValArr[ 39] = 70 
        BCValArr[ 40] = 71 
        BCValArr[ 41] = 72 
        BCValArr[ 42] = 73 
        BCValArr[ 43] = 74 
        BCValArr[ 44] = 75 
        BCValArr[ 45] = 76 
        BCValArr[ 46] = 77 
        BCValArr[ 47] = 78 
        BCValArr[ 48] = 79 
        BCValArr[ 49] = 80 
        BCValArr[ 50] = 81 
        BCValArr[ 51] = 82 
        BCValArr[ 52] = 83 
        BCValArr[ 53] = 84 
        BCValArr[ 54] = 85 
        BCValArr[ 55] = 86 
        BCValArr[ 56] = 87 
        BCValArr[ 57] = 88 
        BCValArr[ 58] = 89 
        BCValArr[ 59] = 90 
        BCValArr[ 60] = 91 
        BCValArr[ 61] = 92 
        BCValArr[ 62] = 93 
        BCValArr[ 63] = 94 
        BCValArr[ 64] = 95 
        BCValArr[ 65] = 96 
        BCValArr[ 66] = 97 
        BCValArr[ 67] = 98 
        BCValArr[ 68] = 99 
        BCValArr[ 69] = 100
        BCValArr[ 70] = 101
        BCValArr[ 71] = 102
        BCValArr[ 72] = 103
        BCValArr[ 73] = 104
        BCValArr[ 74] = 105
        BCValArr[ 75] = 106
        BCValArr[ 76] = 107
        BCValArr[ 77] = 108
        BCValArr[ 78] = 109
        BCValArr[ 79] = 110
        BCValArr[ 80] = 111
        BCValArr[ 81] = 112
        BCValArr[ 82] = 113
        BCValArr[ 83] = 114
        BCValArr[ 84] = 115
        BCValArr[ 85] = 116
        BCValArr[ 86] = 117
        BCValArr[ 87] = 118
        BCValArr[ 88] = 119
        BCValArr[ 89] = 120
        BCValArr[ 90] = 121
        BCValArr[ 91] = 122
        BCValArr[ 92] = 123
        BCValArr[ 93] = 124
        BCValArr[ 94] = 125
        BCValArr[ 95] = 126
        BCValArr[ 96] = 11
        BCValArr[ 97] = 6
        BCValArr[ 98] = 5
        BCValArr[ 99] = 15
        BCValArr[100] = 9
        BCValArr[101] = 7
        BCValArr[102] = 8
        BCValArr[103] = 4
        .

    BCString = CHR(02) + BCData.

    BCValue = 104.

    DO i = 1 TO LENGTH(BCData) :

        BCValue = BCValue + i * (ASC(SUBSTRING(BCData, i, 1)) - 32 ).

    END.

    BCValue = BCValue MODULO 103 .

    BCString = BCString + CHR(BCValArr[BCValue + 1]) + CHR(03).

    RETURN BCString.

END FUNCTION.

